篇首语:本文由编程笔记#小编为大家整理,主要介绍了淘淘商城---8.6相关的知识,希望对你有一定的参考价值。
继续八月五号写的,今天晚上花点时间开发这个项目,过程如下:
在webapp下创建一个index.jsp的欢迎页
index.jsp:
<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8"
pageEncoding&#61;"UTF-8"%>
如果你看到此页面&#xff0c;说明taotao-manager已经运行
要运行工程&#xff0c;需要运行聚合工程也就是taotao-manager。
在taotao-manager工程的pom文件中添加如下内容&#xff1a;
在浏览器上输入http://localhost:8080/
注意&#xff1a;
如果运行将taotao-manager运行在tomcat出错&#xff0c;执行下面两步&#xff1a;
1、需要把taotao-parent工程安装到本地仓库。Install
2、需要把taotao-common安装到本地仓库。install
使用mysql数据库。这里我提供数据库脚本taotao.sql,下载地址&#xff1a;http://pan.baidu.com/s/1kUMO4SJ
我这里是在CentOS7上搭建数据库系统&#xff0c;详情可以参考我的另一篇博客&#xff1a;CentOS7上安装mysql&#xff0c;链接地址&#xff1a;http://blog.csdn.net/sinat_31726559/article/details/51955125
然后用nativeCat连接上远程数据库&#xff0c;在mysql里面新建一个taotao的数据库&#xff0c;右键运行sql文件&#xff0c;将taotao.sql文件运行在taotao的数据库中&#xff0c;显示成功后就会导入项目中我们要用到的所有表。
注意&#xff1a;在互联网行业的项目中尽可能的减少表的管理查询。使用冗余解决表的关联问题。有利于分库分表。
商品表&#xff1a;
Sku&#xff1a;最小库存量单位。就是商品id。就是商品最细力度的划分。每个sku都唯一对应一款商品&#xff0c;商品的颜色、配置都已经唯一确定。
Mybatis的逆向工程。根据数据库表生成java代码。详细教程可参考:http://www.tuicool.com/articles/ABbqqie
这里我给大家提供好我这边能跑的官网工程&#xff0c;上面的配置文件是按照我机器上面的信息配置的&#xff0c;你们用的时候要记得将上面的一部分信息修改成符合你机器,逆向工程下载地址我已经上传到我的云盘里&#xff0c;链接是&#xff1a;http://pan.baidu.com/s/1qYvknrm
generatorConfig.xml&#xff1a;
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
password&#61;"115010">
运行成功后会产生上面两个java包下的代码。
使用mybatis框架。创建SqlMapConfig.xml。
创建一个applicationContext-dao.xml
1、配置数据源
2、需要让spring容器管理SqlsessionFactory&#xff0c;单例存在。
3、把mapper的代理对象放到spring容器中。使用扫描包的方式加载mapper的代理对象。
1、事务管理
2、需要把service实现类对象放到spring容器中管理。1、配置注解驱动
2、配置视图解析器
3、需要扫描controller
1、spring容器的配置
2、Springmvc前端控制器的配置
3、Post乱码过滤器首先思考我们这些配置文件应该放在我们创建的哪个工程下&#xff1f;
答&#xff1a;就我思考&#xff0c;首先我们应该理解配置文件是干什么用的&#xff0c;假如我将配置文件放在taotao-manager-pojo下&#xff0c;他是一个jar形式的工程&#xff0c;开发完后会打包成jar放到lib下&#xff0c;这样程序就读不到配置文件了&#xff0c;所以这里我们应该放到war的工程下。
需要把配置文件放到taotao-manager-web工程下。因为此工程为war工程&#xff0c;其他的工程只是一个jar包。
整合后的工程结构图如下所示&#xff1a;
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
xmlns:aop&#61;"http://www.springframework.org/schema/aop" xmlns:tx&#61;"http://www.springframework.org/schema/tx"
xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation&#61;"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
xmlns:aop&#61;"http://www.springframework.org/schema/aop" xmlns:tx&#61;"http://www.springframework.org/schema/tx"
xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation&#61;"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
xmlns:aop&#61;"http://www.springframework.org/schema/aop" xmlns:tx&#61;"http://www.springframework.org/schema/tx"
xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation&#61;"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
xmlns:context&#61;"http://www.springframework.org/schema/context"
xmlns:mvc&#61;"http://www.springframework.org/schema/mvc"
xsi:schemaLocation&#61;"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
xsi:schemaLocation&#61;"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id&#61;"taotao" version&#61;"2.5">
注意&#xff1a;标红部分的"/"会拦截所有请求包括静态资源。需要在springmvc.xml中添加静态资源的映射。
修改完的springmvc如下&#xff1a;
xmlns:context&#61;"http://www.springframework.org/schema/context"
xmlns:mvc&#61;"http://www.springframework.org/schema/mvc"
xsi:schemaLocation&#61;"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
这部分的资源我已经上传到云盘&#xff0c;下载链接是:http://pan.baidu.com/s/1qYIkRIO
将里面的静态资源复制粘贴到WEB-INF下面&#xff0c;如图&#xff1a;
这里我们考虑一下为啥不直接用全局扫描呢&#xff1f;
答&#xff1a;首先我们要理解springmvc和spring的父子容器关系&#xff0c;如下图所示&#xff1a;
例如&#xff1a;
在applicationContext-service中配置&#xff1a;
会扫描&#64;Controller、&#64;Service、&#64;Repository、&#64;Compnent
Springmvc.Xml中不扫描。
结果&#xff1a;springmvc。不能提供服务&#xff0c;因为springmvc子容器中不扫描会没有controller对象。
所以这里我们不能去配置全局扫描&#xff0c;会找不到对象的。
这里我们就做个根据商品id查询商品信息。
SELECT * from tb_item WHERE id&#61;536563
使用逆向工程生成的mapper文件
接收商品id调用dao查询商品信息。返回商品pojo对象&#xff0c;代码如下&#xff1a;
定义一个ItemService接口&#xff1a;
package com.taotao.service;
import com.taotao.pojo.TbItem;
/**
*
* &#64;ClassName: ItemService
* &#64;Description: TODO(商品管理的itemService接口)
* &#64;author 汪本成
* &#64;date 2016年8月6日 下午10:31:12
*
*/
public interface ItemService
TbItem getItemById(long itemId);
设计一个ItemService的实现类
package com.taotao.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.taotao.mapper.TbItemMapper;
import com.taotao.pojo.TbItem;
import com.taotao.pojo.TbItemExample;
import com.taotao.pojo.TbItemExample.Criteria;
import com.taotao.service.ItemService;
/**
*
* &#64;ClassName: ItemServiceImpl
* &#64;Description: TODO(商品管理的ItemService)
* &#64;author 汪本成
* &#64;date 2016年8月6日 下午10:30:28
* &#64;version 1.0
*/
&#64;Service
public class ItemServiceImpl implements ItemService
&#64;Autowired
private TbItemMapper itemMapper;
&#64;Override
public TbItem getItemById(long itemId)
// TODO Auto-generated method stub
/**
* 1、根据主键查询
*
//TbItem item &#61; itemMapper.selectByPrimaryKey(itemId);
/**
* 2、根据条件进行查询
*/
//添加查询条件
TbItemExample example &#61; new TbItemExample();
Criteria criteria &#61; example.createCriteria();
criteria.andIdEqualTo(itemId);
//返回查询结果到List中
List
//进行判断
if(null !&#61; list && list.size() > 0)
TbItem item &#61; list.get(0);
return item;
return null;
接收页面请求商品id&#xff0c;调用service查询商品信息。直接返回一个json数据。需要使用&#64;ResponseBody注解。
package com.taotao.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.taotao.pojo.TbItem;
import com.taotao.service.ItemService;
/**
*
* &#64;ClassName: ItemController
* &#64;Description: TODO(调用ItemService查询商品信息)
* &#64;author 汪本成
* &#64;date 2016年8月6日 下午10:49:53
*
*/
&#64;Controller
public class ItemController
&#64;Autowired
private ItemService itemService;
&#64;RequestMapping("/item/itemId")
&#64;ResponseBody
public TbItem getItemById(&#64;PathVariable Long itemId)
TbItem tbItem &#61; itemService.getItemById(itemId);
return tbItem;
启动taotao-manager之后&#xff0c;打开浏览器输入http://localhost:8080/item/536563,会报错&#xff0c;如下&#xff1a;
这个错误的解决也很简单
修改taotao-manager-mapper的pom文件&#xff0c;在文件中添加下面内容就好
修改完之后刷新页面&#xff0c;如下&#xff1a;
测试ok&#xff01;&#xff0c;明天继续&#xff0c;欢迎关注&#xff0c;一直分享干货中。